package com.sdnu.iosclub.staqvs.controller;


import com.sdnu.iosclub.qvs.entity.QvsQuestion;
import com.sdnu.iosclub.qvs.entity.vo.QvsCurPeoSurveyVo;
import com.sdnu.iosclub.qvs.entity.vo.QvsSurveyVo;
import com.sdnu.iosclub.qvs.entity.vo.QvsVoterVo;
import com.sdnu.iosclub.serviceutil.R;
import com.sdnu.iosclub.staqvs.service.QvsStaService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author li
 * @since 2022-09-16
 */
@RestController
@RequestMapping("/qvs/sta")
public class QvsStaController {

    @Autowired
    QvsStaService qvsStaService;

    /**
     * 根据问卷id获取所有问题
     * @param id 问卷id
     * @return 返回所有问题信息
     */
    @ApiOperation("根据问卷id获取所有问题")
    @GetMapping("getAllQuestionBySurveyId/{id}")
    public R getAllQuestionBySurveyId(@PathVariable String id){
        return R.ok().data("questionList", qvsStaService.getAllQuestionBySurveyId(id));
    }

    /**
     * 根据问题id获取所有日期或时间的Text
     * @param id 问题id
     * @return 返回所有日期或时间的Text
     */
    @ApiOperation("根据问题id获取所有日期或时间的Text")
    @GetMapping("getAllTextByQuestionId/{id}")
    public R getAllTextByQuestionId(@PathVariable String id){
        return R.ok().data("textList", qvsStaService.getAllTextByQuestionId(id));
    }

    /**
     * 根据问题id获取所有选项内容及选择人数
     * @param id 问题id
     * @return 返回所有选项内容及选择人数
     */
    @ApiOperation("根据问题id获取所有选项内容及选择人数")
    @GetMapping("getAllOptionAndCountByQuestionId/{id}")
    public R getAllOptionAndCountByQuestionId(@PathVariable String id) {
        Map<String, Object> map = qvsStaService.getAllOptionAndCountByQuestionId(id);
        return R.ok().data("info",map);
    }

    /**
     * 根据条件分页查询问卷信息
     * @param current 当前页数
     * @param size 每页的数量
     * @return 返回问卷信息
     */
    @ApiOperation("根据条件分页查询问卷信息")
    @PostMapping("pageGetSurvey/{current}/{size}")
    public R pageGetSurvey(@PathVariable long current,
                           @PathVariable long size,
                           @RequestBody(required = false)QvsSurveyVo qvsSurveyVo) {
        Map<String,Object> map=qvsStaService.pageGetSurvey(current,size,qvsSurveyVo);

        return R.ok().data("list",map.get("list")).data("total",map.get("total"));
    }

    /**
     * 根据条件分页查询问题信息
     * @param id 问卷id
     * @param current 当前页数
     * @param size 每页的数量
     * @return 返回问题信息
     */
    @ApiOperation("根据条件分页查询问题信息")
    @PostMapping("pageGetQuestion/{id}/{current}/{size}")
    public R pageGetQuestion(@PathVariable String id,
                             @PathVariable long current,
                             @PathVariable long size,
                             @RequestBody(required = false)QvsQuestion qvsQuestion) {
        Map<String,Object> map=qvsStaService.pageGetQuestion(id,current,size,qvsQuestion);

        return R.ok().data("list",map.get("list")).data("total",map.get("total"));
    }

    /**
     * 根据问题id查找所有填写人的信息
     * @param id 问题id
     * @return 返回填写人信息
     */
    @ApiOperation("根据问题id查找所有填写人的信息")
    @GetMapping("getVoterByQuestionId/{id}")
    public R getVoterByQuestionId(@PathVariable String id) {
        Map<String,Object> map=qvsStaService.getVoterByQuestionId(id);
        return R.ok().data("resultVoter",map.get("resultVoter")).data("textVoter",map.get("textVoter"))
                .data("resultCount",map.get("resultCount")).data("textCount",map.get("textCount"));
    }

    /**
     * 根据问卷id查找所有填写人的信息
     * @param id 问卷id
     */
    @ApiOperation("根据问卷id查找所有填写人的信息")
    @PostMapping("getVoterBySurveyId/{id}")
    public R getVoterBySurveyId(@PathVariable String id,@RequestBody(required = false) QvsVoterVo qvsVoterVo){
        List<QvsVoterVo> voterVoList = qvsStaService.getVoterBySurveyId(id,qvsVoterVo);
        return R.ok().data("info",voterVoList).data("total",voterVoList.size());
    }

    /**
     * 根据问卷id和当前人的id查找：所有问题的全部信息
     */
    @ApiOperation("根据问卷id和当前人的id查找所有问题的全部信息")
    @GetMapping("getAllInfoBySurveyIdAndVoterId/{surveyId}/{voterId}")
    public R getAllInfoBySurveyIdAndVoterId(@PathVariable String surveyId,@PathVariable String voterId){
        List<QvsCurPeoSurveyVo> info = qvsStaService.getAllInfoByVoterIdAndSurveyId(surveyId, voterId);
        return R.ok().data("info",info).data("total",info.size());
    }
















}

